/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.sorbonne.inf5.yams.vue;

import fr.sorbonne.inf5.yams.controleur.ControleurApplication;
import fr.sorbonne.inf5.yams.properties.BundleTool;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Boite de dialogue permettant la saisie des
 * noms des deux joueurs
 * @author Dubos Romain
 * @author Oukherfellah Riad
 */
public class DialogDeuxJoueurs extends JDialog {

    //ELEMENTS
    private JTextField joueur1, joueur2;
    private JLabel joueur1Label, joueur2Label;
    private JButton ok, annuler;
    private JPanel joueur1Pan, joueur2Pan;
    //NOMS DES ELEMENTS
    public static final String OK="ok2";
    public static final String ANNULER="annuler2";

    /**
     * Constructeur
     * @param parent JFrame parente
     * @param title titre de la fenetre
     * @param modal bloquant ou pas
     */
    public DialogDeuxJoueurs(JFrame parent, String title, boolean modal) {
        super(parent, title, modal);
        this.setSize(400, 130);
        this.setLocation(300, 200);
        this.setResizable(false);
        this.initialiserComponsants();
        this.nommerComposants();
    }

    /**
     * Permet d'afficher la fenetre de dialogue
     * @return true si les champs ont ete remplis
     */
    public void afficherFenetre() {
        this.setVisible(true);
    }

    /**
     * Masque la fenetre de dialogue
     */
    public void cacherFenetre() {
        this.setVisible(false);
        this.nettoyerChamps();
    }

    /**
     * Vide les champs de saisie des noms
     */
    private void nettoyerChamps() {
        this.joueur1.setText("");
        this.joueur2.setText("");
    }

    /**
     * Initialise les composants de la fenetre de dialogue
     */
    private void initialiserComponsants() {
        //PANEL DES BOUTONS
        JPanel boutons = new JPanel();
        this.ok = new JButton();
        this.ok.setActionCommand(OK);
        this.annuler = new JButton();
        this.annuler.setActionCommand(ANNULER);
        boutons.add(this.ok);
        boutons.add(this.annuler);

        //PANEL DU 1ER JOUEUR
        joueur1Pan = new JPanel();
        joueur1Pan.setBackground(Color.white);
        this.joueur1Label = new JLabel();
        this.joueur1 = new JTextField(5);
        joueur1Pan.add(this.joueur1Label);
        joueur1Pan.add(this.joueur1);

        //PANEL DU 2EME JOUEUR
        joueur2Pan = new JPanel();
        joueur2Pan.setBackground(Color.white);
        this.joueur2Label = new JLabel();
        this.joueur2 = new JTextField(5);
        joueur2Pan.add(this.joueur2Label);
        joueur2Pan.add(this.joueur2);

        //PANEL DES DEUX JOUEURS
        JPanel contenu = new JPanel();
        contenu.add(joueur1Pan);
        contenu.add(joueur2Pan);


        this.getContentPane().add(contenu, BorderLayout.CENTER);
        this.getContentPane().add(boutons, BorderLayout.SOUTH);
    }

    /**
     * Permet de nommer l'ensemble des coposants
     * 
     */
    public final void nommerComposants() {
        this.ok.setText(BundleTool.getBundle().getString("ok"));
        this.annuler.setText(BundleTool.getBundle().getString("annuler"));
        this.joueur1Label.setText(BundleTool.getBundle().getString("saisireNom"));
        this.joueur2Label.setText(BundleTool.getBundle().getString("saisireNom"));
        joueur1Pan.setBorder(BorderFactory.createTitledBorder(BundleTool.getBundle().getString("joueur1")));
        joueur2Pan.setBorder(BorderFactory.createTitledBorder(BundleTool.getBundle().getString("joueur2")));
    }

    /**
     * Abonne les boutons ok et annuler
     * @param ctrl
     */
    public void abonnement(ControleurApplication ctrl) {
        this.ok.addActionListener(ctrl);
        this.annuler.addActionListener(ctrl);
    }

    /**
     * Permet de connaitre l'etat des champs
     * @return true si les champs sont remplis
     */
    public Boolean isChampRemplit() {
        boolean champ1 = (this.getNom1() != null) && (!this.getNom1().equals(""));
        boolean champ2 = (this.getNom2() != null) && (!this.getNom2().equals(""));

        return champ1 && champ2;
    }

    /**
     * Verifie que les deux noms entrés sont identique
     * @param champ1 nom 1
     * @param champ2 nom 2
     * @return true si identiques
     */
    public Boolean isChampsIdentique(String champ1, String champ2){
        return champ1.equals(champ2);
    }

    /**
     * Change le titre de la fenetre
     * @param pTitre nouveau titre
     */
    public void setTitre(String pTitre){
        this.setTitle(pTitre);
    }


    /**
     * Renvoie le nom du joueur n°1
     * @return nom
     */
    public String getNom1() {

        return this.joueur1.getText();
    }

    /**
     * Renvoie le nom du joueur n°2
     * @return nom
     */
    public String getNom2() {
        return this.joueur2.getText();
    }
}
